參加鐵人賽主要是想透過刷題來更深入的學習自己不是很熟悉的程式語言(當然有一部分是被逼的),由於學校主科程式語言大多都是用Java但我想把Python這個程式語言學好,所以接下來我將會以一個入學者的方式,盡量精簡我自己理解的東西,用簡單一點的方式表達出來,希望可以互相學習,而我的刷題方式是透過Leetcode我想刷雙數的題目,當然我有一些限制,簡單的題型不能超過五題,所以如果遇到簡單的我有些會跳過,希望我能撐過這三十天,逼自己學習,有個目標比較有動力,通過這三十天的挑戰讓自己更好掌握一門好用的程式語言,我的計畫是一天選個兩到三題,必須解決至少其中一題,再透過那題目去分析,註解以此了解自己的學習狀況,或者我遇到的困難,如何解決等。
下面是我的刷題計畫表(30 天)
第一週:基礎
目標:熟悉資料結構跟基本的演算法
Day 1:
2. Add Two Numbers
4. Median of Two Sorted Arrays
6. Zigzag Conversion
Day 2:
8. String to Integer (atoi)
10. Regular Expression Matching
Day 3:
12. Integer to Roman
14. Longest Common Prefix
16. 3Sum Closest
Day 4:
18. 4Sum
20. Valid Parentheses
22. Generate Parentheses
Day 5:
24. Swap Nodes in Pairs
26. Remove Duplicates from Sorted Array
28. Implement strStr()
Day 6:
30. Substring with Concatenation of All Words
32. Longest Valid Parentheses
34. Find First and Last Position of Element in Sorted Array
Day 7:
36. Valid Sudoku
38. Count and Say
第二週:進階資料結構和基礎演算法
目標:了解更複雜的資料結構
Day 8:
40. Combination Sum II
42. Trapping Rain Water
44. Wildcard Matching
Day 9:
46. Permutations
48. Rotate Image
50. Pow(x, n)
Day 10:
52. N-Queens II
54. Spiral Matrix
56. Merge Intervals
Day 11:
58. Length of Last Word
60. Permutation Sequence
62. Unique Paths
Day 12:
64. Minimum Path Sum
66. Plus One
68. Text Justification
Day 13:
70. Climbing Stairs
72. Edit Distance
74. Search a 2D Matrix
Day 14:
76. Minimum Window Substring
78. Subsets
第三週:演算法運用跟優化
目標:掌握遞歸、迭代跟動態規劃
Day 15:
80. Remove Duplicates from Sorted Array II
82. Remove Duplicates from Sorted List II
84. Largest Rectangle in Histogram
Day 16:
86. Partition List
88. Merge Sorted Array
90. Subsets II
Day 17:
92. Reverse Linked List II
94. Binary Tree Inorder Traversal
96. Unique Binary Search Trees
Day 18:
98. Validate Binary Search Tree
100. Same Tree
102. Binary Tree Level Order Traversal
Day 19:
104. Maximum Depth of Binary Tree
106. Construct Binary Tree from Inorder and Postorder Traversal
108. Convert Sorted Array to Binary Search Tree
Day 20:
110. Balanced Binary Tree
112. Path Sum
114. Flatten Binary Tree to Linked List
Day 21:
116. Populating Next Right Pointers in Each Node
118. Pascal's Triangle
第四週:綜合實力挑戰跟解決難題
目標:用所學解決更有挑戰性的問題
Day 22:
120. Triangle
122. Best Time to Buy and Sell Stock II
124. Binary Tree Maximum Path Sum
Day 23:
126. Word Ladder II
128. Longest Consecutive Sequence
130. Surrounded Regions
Day 24:
132. Palindrome Partitioning II
134. Gas Station
136. Single Number
Day 25:
138. Copy List with Random Pointer
140. Word Break II
142. Linked List Cycle II
Day 26:
144. Binary Tree Preorder Traversal
146. LRU Cache
148. Sort List
Day 27:
150. Evaluate Reverse Polish Notation
152. Maximum Product Subarray
154. Find Minimum in Rotated Sorted Array II
Day 28:
156. Binary Tree Upside Down
158. Read N Characters Given Read4 II
Day 29:
160. Intersection of Two Linked Lists
162. Find Peak Element
Day 30:
164. Maximum Gap
166. Fraction to Recurring Decimal